package com.sc.nft.entity;

import java.math.BigDecimal;
import java.util.Date;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sc.nft.enums.SaasTaskTypeEnum;
import com.sc.nft.enums.SaasTaskTypePlaceEnum;
import com.sc.nft.sup.SuperEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * 用户任务命中(SaasUserTask)表实体类
 *
 * @author 王伟成
 * @since 2024-01-11 15:10:00
 */
@Data
@TableName("sc_saas_user_task")
@ApiModel(value = "sc_saas_user_task 对象", description = "用户任务命中")
public class SaasUserTask extends SuperEntity implements Serializable {
    @ApiModelProperty(value = "任务基础表sc_saas_task的主键")
    private Long saasTaskId;

    @ApiModelProperty(value = "任务踪迹编码,该编码作用为每次用户命中任务的时候,需要一起记录下来这个参数,让用户知道,该任务命中是什么时候.任务是否过期.在每日重置的时候,用以做备份记录扫描")
    private String taskTrace;

    @ApiModelProperty(value = "用户id")
    private Long userId;

    @ApiModelProperty(value = "任务类型")
    private SaasTaskTypeEnum taskType;

    @ApiModelProperty(value = "任务生效位置")
    private SaasTaskTypePlaceEnum saasType;

    @ApiModelProperty(value = "任务进度")
    private BigDecimal schedule;

    @ApiModelProperty(value = "主动邀请人数(这里意味着是邀请者的意思)")
    private Integer voluntarySum;

    @ApiModelProperty(value = "完成次数")
    private Integer accomplishSum;

    @ApiModelProperty(value = "拓展字段.只做一些基本的存储,不作为功能使用.方便查账.")
    private JSONObject expand;

    @ApiModelProperty(value = "是否领取 未领取:0 领取:1")
    private Boolean status;

    @ApiModelProperty(value = "任务奖励id，他符合哪个任务奖励")
    private Long taskAwardId;

    @ApiModelProperty(value = "阶段表id")
    private Long stageId;

    @ApiModelProperty(value = "任务是否已完成")
    private Boolean fulfilStatus;

    @ApiModelProperty(value = "是否过期")
    private Boolean pastDue;

    @ApiModelProperty(value = "完成时间")
    private Date fulfilTime;

    @ApiModelProperty(value = "领取时间")
    private Date getTime;

    @ApiModelProperty(value = "结束时间")
    private Date overTime;
}
